Orchestrator
The Orchestrator is a multi-phase planner that turns a pool of unassigned orders into a committable plan — stack vehicle allocation, driver allocation, and route optimization phases in sequence.
When to Use the Orchestrator
Use the Orchestrator for:
- Batch dispatching (50+ deliveries across 10 or more drivers)
- Mid-day re-sequencing when conditions change
- Route optimization without reassigning drivers
- Capacity-first allocation followed by driver assignment
- Single-phase runs on existing assignments
Available Phases
Each phase runs against the order pool using a configurable engine, producing a preview-able and adjustable plan.
| Mode | Description |
|---|---|
assign_vehicles | Allocate orders to vehicles by capacity, location, and constraints |
assign_drivers | Match drivers to vehicles/orders via shift schedules and skills |
optimize_routes | Re-sequence stops for minimum distance/time |
allocate | Legacy single-pass driver + vehicle assignment |
Engines
| Engine | Description |
|---|---|
| Greedy | Fast first-fit allocation — suitable for simpler scenarios |
| VROOM | High-quality optimization with time windows, capacity, and multi-stop support |
Constraints Respected
| Entity | Constraints |
|---|---|
| Orders | Required skills, time windows, scheduled-at time, priority (0–100) |
| Drivers | Skills, shift window, online status, maximum travel time |
| Vehicles | Capacity weight (kg), capacity volume (m³), current location |
Workflow
- Open Operations → Orchestrator
- Review the pool of unassigned orders
- Build phases — set mode, engine, and options for each
- Run phases (executed sequentially)
- Review the generated plan and adjust assignments if needed
- Commit — creates driver manifests
Phase Configuration Options
| Option | Description |
|---|---|
| Label | Custom name for this phase |
| Mode | Allocation mode (see above) |
| Engine | Optimization engine |
| Order statuses | Which order statuses to include |
| Balance workload | Distribute orders evenly across drivers |
| Respect skills | Only assign orders to drivers with required skills |
| Respect capacity | Only assign orders that fit vehicle capacity |
| Return to depot | Include return trip in route calculations |
| Auto-commit | Automatically commit without manual review |
Manifest Output
After committing a plan, the Orchestrator generates a Manifest per driver containing:
- Estimated total distance and duration
- Stop sequence numbers
- Arrival time estimates per stop
- Assigned driver and vehicle
Each stop in the manifest is a ManifestStop record linked to a specific order.
Unassigned Orders
Orders that cannot be allocated are flagged with a reason:
- No available driver matching the required skills
- Vehicle capacity exceeded
- Impossible time window
- No vehicle available in the required service area
These orders remain in the unassigned pool and can be manually dispatched or re-run in the next Orchestrator cycle.